{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## PCA Analysis in Python's using sklearn\n",
    "\n",
    "This notebook serves to discuss what is actually occuring behind the scenes in sklearn when the decomposition.pca package is being used.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "unitary eigenvectors:  complex square matrix U is unitary if its conjugate transpose U∗ is also its inverse—that is, if U'U = UU'=I"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "https://en.wikipedia.org/wiki/Unitary_matrix"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Two excellent references:\n",
    "1. [Machine Learning: A Probabalistic Method](https://mitpress.mit.edu/books/machine-learning-0), *by Kevin P. Murphy* (he was a senior Research Scientist at Google in early days)\n",
    "2. [The Elements of Statistical Learning: Data Mining, Inference and Prediction](https://web.stanford.edu/~hastie/ElemStatLearn/), *by Hastie et. al.* (authors are from CS and Stats departments at Stanford)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 413,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import numpy as np\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.decomposition import PCA\n",
    "import decimal\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generate Signals"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 414,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "base_signalA = np.array([1, 1, 0, 0, 0, 0, 0, 0, 0, 0])\n",
    "base_signalB = np.array([0, 0, 0, 0, 1, 1, 0, 0, 0, 0])\n",
    "base_signalC = np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 415,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#plt.plot(range(0, 10), (base_signalA + base_signalB + base_signalC) /3.0, 'b--');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 416,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n/j8JhCNEQGqvaAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a22da6ad0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(range(0, 10), base_signalA, 'b--');\n",
    "plt.plot(range(0, 10), base_signalB, 'g--');\n",
    "plt.plot(range(0, 10), base_signalC, 'r--');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 417,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'\\n    # Filling up Array with 1 signal\\n    firstSignal = np.array(np.nan * np.zeros(10)) \\n    secondSignal = np.array(np.nan * np.zeros(10)) \\n    thirdSignal = np.array(np.nan * np.zeros(10)) \\n    \\n    count = 0 \\n    for x in range(0,len(base_signalA)):\\n        #oneSignal[x] = (np.random.uniform(.8,1) * base_signalA[x]) + (np.random.uniform(0.8,1) * base_signalB[x])        #+ (np.random.uniform(.8,1) * base_signalC[x]) + np.random.uniform(0,.05)\\n        \\n        if \\n        \\n        firstSignal[x] = (np.random.uniform(.99,1) * base_signalA[x]) + np.random.uniform(0,.01)\\n        secondSignal[x] = (np.random.uniform(.99,1) * base_signalB[x]) + np.random.uniform(0,.01)\\n        thirdSignal[x] = (np.random.uniform(.99,1) * base_signalC[x]) + np.random.uniform(0,.01)\\n        \\n        \\n        \\n    \\n    allSignals.append(firstSignal)\\n    allSignals.append(secondSignal)\\n    allSignals.append(thirdSignal)\\n'"
      ]
     },
     "execution_count": 417,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Every signal is based on other signals\n",
    "\n",
    "allSignals = []\n",
    "counter = 0\n",
    "\n",
    "for number in range(0,1000):\n",
    "    firstSignal = np.array(np.nan * np.zeros(10))\n",
    "    for x in range(0,len(base_signalA)):\n",
    "        firstSignal[x] = (np.random.uniform(.99,1) * base_signalA[x]) + np.random.uniform(0,.01)\n",
    "    allSignals.append(firstSignal)\n",
    "        \n",
    "for number in range(0,1000):\n",
    "    secondSignal = np.array(np.nan * np.zeros(10))\n",
    "    for x in range(0,len(base_signalB)):\n",
    "        secondSignal[x] = (np.random.uniform(.99,1) * base_signalB[x]) + np.random.uniform(0,.01)\n",
    "    allSignals.append(secondSignal)\n",
    "    \n",
    "for number in range(0,1000):  \n",
    "    thirdSignal = np.array(np.nan * np.zeros(10))\n",
    "    for x in range(0,len(base_signalC)):\n",
    "        thirdSignal[x] = (np.random.uniform(.99,1) * base_signalC[x]) + np.random.uniform(0,.01)\n",
    "    allSignals.append(thirdSignal)\n",
    "    \n",
    "    \n",
    "\"\"\"\n",
    "    # Filling up Array with 1 signal\n",
    "    firstSignal = np.array(np.nan * np.zeros(10)) \n",
    "    secondSignal = np.array(np.nan * np.zeros(10)) \n",
    "    thirdSignal = np.array(np.nan * np.zeros(10)) \n",
    "    \n",
    "    count = 0 \n",
    "    for x in range(0,len(base_signalA)):\n",
    "        #oneSignal[x] = (np.random.uniform(.8,1) * base_signalA[x]) + (np.random.uniform(0.8,1) * base_signalB[x])\\\n",
    "        #+ (np.random.uniform(.8,1) * base_signalC[x]) + np.random.uniform(0,.05)\n",
    "        \n",
    "        if \n",
    "        \n",
    "        firstSignal[x] = (np.random.uniform(.99,1) * base_signalA[x]) + np.random.uniform(0,.01)\n",
    "        secondSignal[x] = (np.random.uniform(.99,1) * base_signalB[x]) + np.random.uniform(0,.01)\n",
    "        thirdSignal[x] = (np.random.uniform(.99,1) * base_signalC[x]) + np.random.uniform(0,.01)\n",
    "        \n",
    "        \n",
    "        \n",
    "    \n",
    "    allSignals.append(firstSignal)\n",
    "    allSignals.append(secondSignal)\n",
    "    allSignals.append(thirdSignal)\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 418,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "allSignals = pd.DataFrame(allSignals)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 419,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.996225</td>\n",
       "      <td>0.997310</td>\n",
       "      <td>0.007725</td>\n",
       "      <td>0.006928</td>\n",
       "      <td>0.000038</td>\n",
       "      <td>0.001365</td>\n",
       "      <td>0.002133</td>\n",
       "      <td>0.003040</td>\n",
       "      <td>0.000946</td>\n",
       "      <td>0.005632</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.996698</td>\n",
       "      <td>1.002823</td>\n",
       "      <td>0.002416</td>\n",
       "      <td>0.005011</td>\n",
       "      <td>0.004596</td>\n",
       "      <td>0.007225</td>\n",
       "      <td>0.003744</td>\n",
       "      <td>0.008256</td>\n",
       "      <td>0.004194</td>\n",
       "      <td>0.003489</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.002438</td>\n",
       "      <td>1.003415</td>\n",
       "      <td>0.005788</td>\n",
       "      <td>0.006238</td>\n",
       "      <td>0.007515</td>\n",
       "      <td>0.002786</td>\n",
       "      <td>0.000566</td>\n",
       "      <td>0.001888</td>\n",
       "      <td>0.002379</td>\n",
       "      <td>0.008646</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.999995</td>\n",
       "      <td>1.000023</td>\n",
       "      <td>0.002578</td>\n",
       "      <td>0.002127</td>\n",
       "      <td>0.002069</td>\n",
       "      <td>0.002674</td>\n",
       "      <td>0.007838</td>\n",
       "      <td>0.006786</td>\n",
       "      <td>0.004896</td>\n",
       "      <td>0.008422</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.006976</td>\n",
       "      <td>0.994776</td>\n",
       "      <td>0.000524</td>\n",
       "      <td>0.001607</td>\n",
       "      <td>0.001068</td>\n",
       "      <td>0.005459</td>\n",
       "      <td>0.004076</td>\n",
       "      <td>0.004982</td>\n",
       "      <td>0.001926</td>\n",
       "      <td>0.008693</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2         3         4         5         6  \\\n",
       "0  0.996225  0.997310  0.007725  0.006928  0.000038  0.001365  0.002133   \n",
       "1  0.996698  1.002823  0.002416  0.005011  0.004596  0.007225  0.003744   \n",
       "2  1.002438  1.003415  0.005788  0.006238  0.007515  0.002786  0.000566   \n",
       "3  0.999995  1.000023  0.002578  0.002127  0.002069  0.002674  0.007838   \n",
       "4  1.006976  0.994776  0.000524  0.001607  0.001068  0.005459  0.004076   \n",
       "\n",
       "          7         8         9  \n",
       "0  0.003040  0.000946  0.005632  \n",
       "1  0.008256  0.004194  0.003489  \n",
       "2  0.001888  0.002379  0.008646  \n",
       "3  0.006786  0.004896  0.008422  \n",
       "4  0.004982  0.001926  0.008693  "
      ]
     },
     "execution_count": 419,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "allSignals.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Use PCA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 420,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "zeroMean = allSignals.values - np.mean(allSignals.values, axis = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 421,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "zeroMean = pd.DataFrame(zeroMean)\n",
    "originalNow = pd.DataFrame(allSignals.values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 422,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    1.338744e-16\n",
       "1   -2.303713e-16\n",
       "2   -3.321995e-19\n",
       "3    6.194408e-19\n",
       "4    6.250556e-17\n",
       "5   -6.309768e-18\n",
       "6   -3.894454e-19\n",
       "7    8.124288e-20\n",
       "8   -5.791663e-17\n",
       "9    2.627528e-16\n",
       "dtype: float64"
      ]
     },
     "execution_count": 422,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "zeroMean.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 423,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Make an instance of the Model\n",
    "pca = PCA(svd_solver = 'full')\n",
    "\n",
    "zeroMean_eig = pca.fit_transform(zeroMean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 424,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10"
      ]
     },
     "execution_count": 424,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(pca.components_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 425,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4.32280457,  2.71101253,  3.86491086,  1.2040658 ],\n",
       "       [ 6.60991158,  2.20135799,  3.72300233,  1.19610853],\n",
       "       [ 4.15140866,  3.03456705,  3.73790573,  1.18215671],\n",
       "       [ 4.19694246,  2.99373762,  3.66527395,  1.20945575]])"
      ]
     },
     "execution_count": 425,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    " np.mean(df.values, axis = 0) + (u * s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 426,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.33667869,  0.33663297,  0.00499669,  0.0050303 ,  0.33663333,\n",
       "        0.33662356,  0.00502952,  0.00491878,  0.33660858,  0.33672398])"
      ]
     },
     "execution_count": 426,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(allSignals.values, axis = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 427,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.33667869,  0.33663297,  0.00499669,  0.0050303 ,  0.33663333,\n",
       "        0.33662356,  0.00502952,  0.00491878,  0.33660858,  0.33672398])"
      ]
     },
     "execution_count": 427,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(allSignals.values, axis = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 428,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10,)"
      ]
     },
     "execution_count": 428,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.components_[0].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 429,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1a23b08950>]"
      ]
     },
     "execution_count": 429,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nF5kI5xyP1Ue4tbKEZQtn+C7nHTasqSSUY9TtaPJdSsZq7eoleva8wv8KJWWFr3PuOefc9c65a51z\nfzn82pedc9vGaHuH7volVV795RmOtp5Lu7v+C+YXF3DnjXN5qiFG78Cg73IyUlj9/VdF2ztIVqur\nj1BSmMdv3rLAdykXVVtTxdlzfTy/76TvUjJSOBonlGPcXKadPK+Ewl+y1umOHl7Yf5J7by2nIC/k\nu5yLevd1pVTNLmTLdnX9XI1wNM4N84qYmp++f8bpSOEvWevJhigDCcemmkrfpVxSTo6xaW0lO4+1\ncehkp+9yMkoiMbyTpxZ3XTGFv2SlwYTj8R1Rbr9uNtfMme67nMv6eHUF+aEc6up1938ljrZ20dk7\noMHeq6Dwl6z00sHTHI+fZ3OaDvSONmtaPr9x83y+v/s453oHfJeTMXYPD/amw5YdmUbhL1mprr6J\nuUVTuHPZPN+ljNvmdVV09Q6wbU/z5RsLMNTfX1SQyzWl6f/bXbpR+EvWiZ7t5uU3WtiwpoK8UOZ8\ni6+umsnS+UVs2d6EG2tvaHmHcCTOivIScrST5xXLnJ8MkXF6fEcEAzasTe+B3tHMjNqaSvY3d7An\n1u67nLTX3TfAoVOd6u+/Sgp/ySp9AwmebIjygaXzWFgy1Xc5V+yeVWUU5oc07XMc9sbaGUw4ndx1\nlRT+klVe2H+S1q4+atdl1l3/BUUFedy9sowf7WmmvbvfdzlpLRwdGuzVnf/VUfhLVtmyvYnymVN5\n35LM3RW2tqaS3oEET++O+S4lrYWjcSpmTWX29Cm+S8lICn/JGkdOd1L/5lk21VRm9ADg8rJiVlaU\nUFevgd9LCUfjrKzQfj5XS+EvWWPL9gh5IeO+6orLN05zm9dVcbTlHK8ePeO7lLR0sr2HE+096vKZ\nAIW/ZIXzfYM8szvG+uULKM2CboCP3LKA4ql51OmglzGFo20AGuydAIW/ZIUf7Wmms2eAzWm+j894\nFeSFuHd1OS/sO8npzh7f5aSdxmicvJCxbEH6ndGQKRT+khXq6ptYMnc6axfP8l1K0myqqWQg4Xhy\nZ9R3KWknHImzbMGMtN6tNd0p/CXj7Y21syfWTm1NJWaZO9A72rVzpnPbtbN5fEeUwYQGfi8YGEyw\n93i7+vsnSOEvGa+uvompeSH+2+py36Uk3eZ1VRyPn+flQ6d9l5I23jjVRXffoE7umiCFv2S0jp5+\nng03c9eKhcwoyPNdTtJ9aNk85hRN0cDvCFrclRwKf8loP9h9nPP9g2xelxlbN1+pvFAOG9ZU8NKh\n00TPdvsuJy2Eo23MLMyjanah71IymsJfMpZzji3bm7ilvJiby7P3/NYNaysxYOtO3f3D0J3/ioqS\nrBrf8UHhLxlr57E2Dp/uypgDW65WWclUPrB0Lk/sjNI3kPBdjledPf0cPt2lLp8kUPhLxtqyvYmi\nglw+smKB71ImXe26Klq7+vjpgZO+S/HqtVg7zqHB3iRQ+EtGau3q5Sf7TvCxW8spzM/1Xc6ke++S\nOZTPnBr4rZ7fGuwt153/RCn8JSM91RCjf9BRmyUrei8nlGNsqqlk+9GzHDnd6bscbxojca4pnUZx\nYfbN7Eo1hb9knETC8diOJmoWz2LJvCLf5aTMfdUV5IUssNM+nXPDO3nqrj8ZFP6ScV453EL07Hlq\ns3R658WUTp/C+uULeGZXjPN9g77LSblY23lau3q1mVuSKPwl49TVR5g9LZ/1N833XUrK1dZU0tEz\nwI9ea/ZdSsr9anGXBnuTQeEvGaU5fp6fv36K+9ZUkJ8bvG/fmsWzWDJ3OnUBHPgNR+NMyc1h6YLg\ndPVNpuD99EhG27ojggM2rQ3GQO9oZkZtTSV7Yu3sjbX7LielwtE4y8uKyQsptpJBn6JkjP7BBFt3\nRnnf9XOomBXcpf2/dWs5U/NC1NUH5+6/byDBPu3kmVRJCX8zW29mh8zsiJl9aYyv/5GZHTCz18zs\n52YWrJE6SYqfHTjF6c7erF/ReznFU/O4a8VCng0309HT77uclDh4soPegYQGe5NowuFvZiHgIeDD\nwDJgo5ktG9WsEah2zt0CPA18faLXleCpq4+wsLiA9y+d67sU72rXVXK+f5Af7D7uu5SU0E6eyZeM\nO/+1wBHn3FHnXB+wFbh7ZAPn3EvOuQtbEm4Hsm/jdZlUb7ae4xdHWtm4tpJQjjb0uqW8hFvKi9my\nvQnnsv+gl3AkTun0KZSVTPVdStZIRviXASPPmYsNv3YxDwA/ScJ1JUAeq28iN8f4xJoK36Wkjdqa\nSg6f7mLnsTbfpUy6C4u7tJNn8iQj/Mf60xjzVsTMNgPVwN9e5OsPmlmDmTW0tLQkoTTJBj39gzy1\nK8av3TSPuTMKfJeTNj66YiFFBblZv99PvLuPo63n1N+fZMkI/xgw8nasHHjHChQzuxP4c+Au51zv\n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\nCaD/D2e6eIpeM0lSAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a22d98510>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 1st Principal Component\n",
    "plt.plot(range(0, 10), -pca.components_[0] + np.mean(allSignals.values, axis = 0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 404,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1a22768b90>]"
      ]
     },
     "execution_count": 404,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nRCQJ/X91O87i3y9J2gAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a227f0890>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 1st Principal Component\n",
    "plt.plot(range(0, 10), -pca.components_[1] + np.mean(allSignals.values, axis = 0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 405,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1a22637a10>]"
      ]
     },
     "execution_count": 405,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n/j94DeQNqowPZgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a2277f890>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 3rd, Principal Component\n",
    "# Garbage\n",
    "plt.plot(range(0, 10), pca.components_[2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 412,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1a22fa9990>]"
      ]
     },
     "execution_count": 412,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a226bce10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# First Two PCA. \n",
    "plt.plot(range(0, 10),   np.mean(allSignals.values, axis = 0) - (pca.components_[0] + pca.components_[1]) /2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Explained Variance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 407,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "tot = sum(pca.explained_variance_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 408,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "var_exp = [(i/tot)*100 for i in sorted(pca.explained_variance_, reverse=True)] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 409,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[50.005288650721461,\n",
       " 49.988785689398554,\n",
       " 0.00088030964365937517,\n",
       " 0.00086460573189138111,\n",
       " 0.00085123312730677348,\n",
       " 0.00082158963188483066,\n",
       " 0.00064317776160355646,\n",
       " 0.00063943081326163791,\n",
       " 0.00061692024431044793,\n",
       " 0.00060839292607892852]"
      ]
     },
     "execution_count": 409,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "var_exp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 410,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "SyntaxError",
     "evalue": "invalid syntax (<ipython-input-410-9f87d41cd3b2>, line 2)",
     "output_type": "error",
     "traceback": [
      "\u001b[0;36m  File \u001b[0;32m\"<ipython-input-410-9f87d41cd3b2>\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m    plt.\u001b[0m\n\u001b[0m        ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"
     ]
    }
   ],
   "source": [
    "plt.plot(range(1,11), var_exp)\n",
    "plt."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Cumulative explained variance\n",
    "cum_var_exp = np.cumsum(var_exp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  49.77087541,   99.32346362,   99.43447399,   99.53860057,\n",
       "         99.63798586,   99.73303035,   99.80750921,   99.87946081,\n",
       "         99.94433094,  100.        ])"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cum_var_exp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"\\n\\n# PLOT OUT THE EXPLAINED VARIANCES SUPERIMPOSED \\nplt.figure(figsize=(10, 5))\\nplt.step(range(0, 0), cum_var_exp, where='mid',label='cumulative explained variance')\\nplt.title('Cumulative Explained Variance as a Function of the Number of Components')\\nplt.ylabel('Cumulative Explained variance')\\nplt.xlabel('Principal components')\\n#plt.axhline(y = 95, color='k', linestyle='--', label = '95% Explained Variance')\\n#plt.axhline(y = 90, color='c', linestyle='--', label = '90% Explained Variance')\\nplt.axhline(y = 85, color='r', linestyle='--', label = '85% Explained Variance')\\nplt.legend(loc='best')\\nplt.show()\\n\\n\""
      ]
     },
     "execution_count": 216,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\"\"\"\n",
    "\n",
    "# PLOT OUT THE EXPLAINED VARIANCES SUPERIMPOSED \n",
    "plt.figure(figsize=(10, 5))\n",
    "plt.step(range(0, 0), cum_var_exp, where='mid',label='cumulative explained variance')\n",
    "plt.title('Cumulative Explained Variance as a Function of the Number of Components')\n",
    "plt.ylabel('Cumulative Explained variance')\n",
    "plt.xlabel('Principal components')\n",
    "#plt.axhline(y = 95, color='k', linestyle='--', label = '95% Explained Variance')\n",
    "#plt.axhline(y = 90, color='c', linestyle='--', label = '90% Explained Variance')\n",
    "plt.axhline(y = 85, color='r', linestyle='--', label = '85% Explained Variance')\n",
    "plt.legend(loc='best')\n",
    "plt.show()\n",
    "\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.49770875,  0.49552588,  0.0011101 ,  0.00104127,  0.00099385,\n",
       "        0.00095044,  0.00074479,  0.00071952,  0.0006487 ,  0.00055669])"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.cexplained_variance_ratio_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 292,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1, -1],\n",
       "       [-2, -1],\n",
       "       [-3, -2],\n",
       "       [ 1,  1],\n",
       "       [ 2,  1],\n",
       "       [ 3,  2]])"
      ]
     },
     "execution_count": 292,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# example data from sklearn: http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html\n",
    "X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 293,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.038008155791571234"
      ]
     },
     "execution_count": 293,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.uniform(0,.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 294,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "valueA = [1, 2] * 26\n",
    "valueB = [1, 1, 2, 2] * 13 \n",
    "\n",
    "for index, x in enumerate(valueA):\n",
    "    valueA[index] = x + np.random.uniform(0,.05)\n",
    "    \n",
    "for index, x in enumerate(valueB):\n",
    "    valueB[index] = x + np.random.uniform(0,.05)\n",
    "\n",
    "weeks = range(0, len(valueA))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 295,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a18d53b90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(weeks, valueA)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 296,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a18448dd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(weeks, valueB)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Combine Data into DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 298,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>...</th>\n",
       "      <th>42</th>\n",
       "      <th>43</th>\n",
       "      <th>44</th>\n",
       "      <th>45</th>\n",
       "      <th>46</th>\n",
       "      <th>47</th>\n",
       "      <th>48</th>\n",
       "      <th>49</th>\n",
       "      <th>50</th>\n",
       "      <th>51</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.047815</td>\n",
       "      <td>2.046946</td>\n",
       "      <td>1.015138</td>\n",
       "      <td>2.008146</td>\n",
       "      <td>1.031821</td>\n",
       "      <td>2.013646</td>\n",
       "      <td>1.020976</td>\n",
       "      <td>2.047351</td>\n",
       "      <td>1.014566</td>\n",
       "      <td>2.028522</td>\n",
       "      <td>...</td>\n",
       "      <td>1.007196</td>\n",
       "      <td>2.008829</td>\n",
       "      <td>1.042350</td>\n",
       "      <td>2.043924</td>\n",
       "      <td>1.044622</td>\n",
       "      <td>2.005514</td>\n",
       "      <td>1.044318</td>\n",
       "      <td>2.018718</td>\n",
       "      <td>1.017888</td>\n",
       "      <td>2.012316</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.012798</td>\n",
       "      <td>1.003416</td>\n",
       "      <td>2.033316</td>\n",
       "      <td>2.038689</td>\n",
       "      <td>1.044079</td>\n",
       "      <td>1.011467</td>\n",
       "      <td>2.030766</td>\n",
       "      <td>2.016157</td>\n",
       "      <td>1.040419</td>\n",
       "      <td>1.019628</td>\n",
       "      <td>...</td>\n",
       "      <td>2.003650</td>\n",
       "      <td>2.023042</td>\n",
       "      <td>1.004674</td>\n",
       "      <td>1.000243</td>\n",
       "      <td>2.003441</td>\n",
       "      <td>2.031688</td>\n",
       "      <td>1.016032</td>\n",
       "      <td>1.012267</td>\n",
       "      <td>2.006446</td>\n",
       "      <td>2.036409</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows × 52 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         0         1         2         3         4         5         6   \\\n",
       "0  1.047815  2.046946  1.015138  2.008146  1.031821  2.013646  1.020976   \n",
       "1  1.012798  1.003416  2.033316  2.038689  1.044079  1.011467  2.030766   \n",
       "\n",
       "         7         8         9     ...           42        43        44  \\\n",
       "0  2.047351  1.014566  2.028522    ...     1.007196  2.008829  1.042350   \n",
       "1  2.016157  1.040419  1.019628    ...     2.003650  2.023042  1.004674   \n",
       "\n",
       "         45        46        47        48        49        50        51  \n",
       "0  2.043924  1.044622  2.005514  1.044318  2.018718  1.017888  2.012316  \n",
       "1  1.000243  2.003441  2.031688  1.016032  1.012267  2.006446  2.036409  \n",
       "\n",
       "[2 rows x 52 columns]"
      ]
     },
     "execution_count": 298,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(data = [valueA, valueB])\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Pure Sklearn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 301,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "zeroMean = df.values - np.mean(df.values, axis = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 302,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "zeroMean = pd.DataFrame(zeroMean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 303,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>...</th>\n",
       "      <th>42</th>\n",
       "      <th>43</th>\n",
       "      <th>44</th>\n",
       "      <th>45</th>\n",
       "      <th>46</th>\n",
       "      <th>47</th>\n",
       "      <th>48</th>\n",
       "      <th>49</th>\n",
       "      <th>50</th>\n",
       "      <th>51</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.017509</td>\n",
       "      <td>0.521765</td>\n",
       "      <td>-0.509089</td>\n",
       "      <td>-0.015271</td>\n",
       "      <td>-0.006129</td>\n",
       "      <td>0.501089</td>\n",
       "      <td>-0.504895</td>\n",
       "      <td>0.015597</td>\n",
       "      <td>-0.012927</td>\n",
       "      <td>0.504447</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.498227</td>\n",
       "      <td>-0.007106</td>\n",
       "      <td>0.018838</td>\n",
       "      <td>0.52184</td>\n",
       "      <td>-0.47941</td>\n",
       "      <td>-0.013087</td>\n",
       "      <td>0.014143</td>\n",
       "      <td>0.503226</td>\n",
       "      <td>-0.494279</td>\n",
       "      <td>-0.012047</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.017509</td>\n",
       "      <td>-0.521765</td>\n",
       "      <td>0.509089</td>\n",
       "      <td>0.015271</td>\n",
       "      <td>0.006129</td>\n",
       "      <td>-0.501089</td>\n",
       "      <td>0.504895</td>\n",
       "      <td>-0.015597</td>\n",
       "      <td>0.012927</td>\n",
       "      <td>-0.504447</td>\n",
       "      <td>...</td>\n",
       "      <td>0.498227</td>\n",
       "      <td>0.007106</td>\n",
       "      <td>-0.018838</td>\n",
       "      <td>-0.52184</td>\n",
       "      <td>0.47941</td>\n",
       "      <td>0.013087</td>\n",
       "      <td>-0.014143</td>\n",
       "      <td>-0.503226</td>\n",
       "      <td>0.494279</td>\n",
       "      <td>0.012047</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows × 52 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         0         1         2         3         4         5         6   \\\n",
       "0  0.017509  0.521765 -0.509089 -0.015271 -0.006129  0.501089 -0.504895   \n",
       "1 -0.017509 -0.521765  0.509089  0.015271  0.006129 -0.501089  0.504895   \n",
       "\n",
       "         7         8         9     ...           42        43        44  \\\n",
       "0  0.015597 -0.012927  0.504447    ...    -0.498227 -0.007106  0.018838   \n",
       "1 -0.015597  0.012927 -0.504447    ...     0.498227  0.007106 -0.018838   \n",
       "\n",
       "        45       46        47        48        49        50        51  \n",
       "0  0.52184 -0.47941 -0.013087  0.014143  0.503226 -0.494279 -0.012047  \n",
       "1 -0.52184  0.47941  0.013087 -0.014143 -0.503226  0.494279  0.012047  \n",
       "\n",
       "[2 rows x 52 columns]"
      ]
     },
     "execution_count": 303,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "zeroMean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 304,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Make an instance of the Model\n",
    "pca = PCA(svd_solver = 'full')\n",
    "\n",
    "zeroMean_eig = pca.fit_transform(zeroMean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 309,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 309,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(pca.components_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 305,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nJ4ErgbhhuBL4jfDrPwN+V4KVcyXwSefcEvC98E7oy4AvK4xrIvjouHmdVcvyzy8F1S8/9SNP5O+/\nc5Q3/+FX+b23PI+XPu1M9ZI65xyHjy9yzyNz3PmD2cKqG5+qqqL8S8BfPP6Hji3wC5/6Bnc9PMdi\n6B3Wa8JT9u3kTZedz5P37czmLyHlfebgYf7TX9w5eP4FZ+zggr3bB1JPbnI71mit1cg3DM45/ubO\nH3LdX97No/Nt3nTZfv7jq56W+5qpZo1ToYEtg3anxzcPz/L17x/njgePc/qObI8Vgr/3ZEn+xeUe\nv/fFQ/z+P9xPsya868cv5m0vuqCQv0x+qtd3/PW3HuF3P38f33n0JBfu3cHvXPUc/pfnnpvNvYKN\n+9ipZf7N/3sHX/3eMf73lz6ZX37l0zIPXcbHHvCXM2ynlrr82z/9Ord9+wj/+sUX8quvvjj3d2y6\niAE4F3go9v1h4AVZz3HOdUVkFjgjfPwridemfvoicg1wDcD+/fsVhp2OqUadE+EmsFIUhdMRf97G\nFFXXPPMJu/n5yy/ibR/7Gu+48SC/fdWzmWt3uHBvttfUKrHxOef44Ofu48vffYxvPzLPfGwjuHDv\nDi678PScsRdP3m6vz0f++/f44WybuXaHk+0uJ5e6PH4yuEjdN+K548HjHHzwOG84cD4HLjiNi8/Z\nxUVn7cxsfpbGn5ecf3SuTU3guiufyQOPneKBx09x6MhJvn9sgb07W4XlsNH4o88iDQ8+fop3f/Yu\n/v47R7nknF3817c8j+ftz/Ym4/zHTuVvfHc9PMunb3+Irz90grsfnhscRnziGdv5iQPnFfDXeexk\n/oX3zjn+7u5Hue4v7+YHJxa58tIn8Gs/fjFn7ZouNf6ijfu2ex7lfTffw/1HT/GUM3fyf7/xUl7z\n7CdQV9q47/3hPO/449t5dG6JD73hUl6XY2xG+cs7XUfm2vxvN97O3Q/P8d4rn8Fbf+SCwtf49sLS\nhoZhSPvEkmUfWc8p89rgQeeuB64HOHDgwOQXxxagtYIE3HK3z8EHj/HFe4/y+W8f4dCRk7zu0ifk\nvqZIqopXj+ybmeKT17yQn/n4HfzCp/6ZRk14znl7Ml87PL2azf/4qWX+n9vu48n7dnDlc5/Axefs\n4uln7+LpZ8+wIyeUhnKL4+5H5nj/33ybnVMNdm9rMjPdYOdUg3P2TPOs83aXNDzZ/FEu4T9c8TT2\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a18a52e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 1st Principal Component\n",
    "plt.plot(range(0, 52), pca.components_[0])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 306,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  1.00000000e+00,   2.04078380e-32])"
      ]
     },
     "execution_count": 306,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Only need first component\n",
    "pca.explained_variance_ratio_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 307,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nRJqZnlZWEy7dqV8dX3+7jcLtxYScw5X+3sKwpyTyd/l82WYCIUfH5g0475h2XNC3HX07Jv4wLjVq\n3EymLt/Cjad1o1FWOg0yfTTMTCcn08cv/zuXXm0b8/yPBld7WwEWFu7kkQ8W8fHiTXRo1oAbT+tG\nbqNMguHoezMUuS0JhSkqCbLHH6KoJMhuf+Qbxwfz1nNKj1Y8OyI/4YdZ6f/zkSd35YzerQmEHIFg\nmEAoTCDs6NCsAQM7V/7mX13OOSYu2MAnSzZRXBJib+lgLpoNfdo14ffDqh5AvfDVau57cx5n9W7N\nhp1+FhTuLCs192jdiNOPbM0vz+tdo208mOF/WJR9Xpu5hrtfn8NnPz89bimlroTDrsZfYauydU8J\nb89eR7fcRvRp36RaI6O6VrhjL8OfmUbhjmKeuTafk3u02u/1ddv3MvzZaWzYWcyz1+ZzYvdWcZaU\nvPU7ilm3Yy/dWjWqVP6J58nJS3l88hLuPqcXPzm9e9nzJcEwxz80heO6tuDvVw+sq02uFTuKAkxc\nsJ735haWfRA8+IOjGX5c54Q/N3vNdi566gvuGNqT287sUen1xyYu5i8fLeOL/zuD9s0aVLkd67bv\n5dGJS3jjm7U0zkrnljO6c+0JXSrNJKvK81+s5DdvL+C+83sz8pTY37jWbd/LuU98SrfWjXht9AlV\nBnB9cs4xanwBny/dTP9OzRjYuTkDOzfn2LxmNMtJ7v9wdcO/+kON+GYAPcysK/AdcAVwVYU2bwEj\ngKnAJcD/EgV/XSg/2+dgq6vgB2jRMJMRMWYs1Kd2TRvwyugTuOa5aVw/dgb/uHoAZxwZ+Zq9esse\nrnpmGjuLA4y/YXC1v+HUVNum2QdcV73tzO6s2LybP364mK6tGpbV4Ccv3MDWPSWVdvQeiprmZHBp\nficuze/EjqIAN/27gIffW8TQPm1o3Tj+7+PRSUtonpPBj07qEvP1S/M78ZePlvHqzDXcflbPhNvw\nzbfbuGJMpPz141OO4ObTutU42Eac2IUvl2/hkQ8WMahLC/pVKCmGw467XptNMOx44vL+h3TwA5gZ\nY64ZiHN1mw+JJP0bcs4FgVuAD4GFwKvOuflm9jszuzDa7DmgpZktA+4AKk0HrWv+GLN9pO7kNs7i\npR8fz5FtGzNqXAHvzS1k2cZdXPb0VIpKgrz04+PrPPhrysx45Id9Gdi5OT97ZVbZzJ2XZ6yhXdNs\n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\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a18614cd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "## Useless\n",
    "\n",
    "# 2nd Principal Component\n",
    "plt.plot(range(0, 52), pca.components_[1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Zero Mean the Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 285,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "zeroMean = df.values - np.mean(df.values, axis = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 286,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "testDataframe= pd.DataFrame(zeroMean)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Option 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 287,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "cov_mat = (zeroMean).T.dot((zeroMean)) / (zeroMean.shape[0]-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 288,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# To not have weird imaginary stuff, \n",
    "# use https://stackoverflow.com/questions/8765310/scipy-linalg-eig-return-complex-eigenvalues-for-covariance-matrix?rq=1\n",
    "\n",
    "eig_vals, eig_vecs = np.linalg.eigh(cov_mat)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 289,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n/wFBIFV2F8V6JwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a18fb2190>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(range(0, 52), eig_vecs[0])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 290,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Eigenvectors \n",
      "[[  8.66535490e-04   2.24238703e-05   0.00000000e+00 ...,   9.99948891e-01\n",
      "   -9.69471704e-03   2.58469468e-03]\n",
      " [ -3.98467345e-01   6.85036063e-03  -3.87266428e-02 ...,   8.49687621e-03\n",
      "    8.92358595e-01   1.99202406e-01]\n",
      " [  2.90911802e-01  -1.05110115e-02  -1.34424296e-01 ...,   1.67658678e-03\n",
      "    1.33974556e-01  -1.94996760e-01]\n",
      " ..., \n",
      " [ -4.91130653e-01   5.97748216e-03   1.49388627e-01 ...,  -2.67820465e-03\n",
      "   -2.70156023e-01   1.97657449e-01]\n",
      " [ -8.03703507e-02   2.19860608e-02  -4.97879872e-01 ...,   3.96793617e-04\n",
      "   -2.32065003e-02  -1.96287191e-01]\n",
      " [ -2.27860463e-03   1.11852431e-03  -1.04143108e-02 ...,  -1.82905814e-05\n",
      "   -1.43705298e-03   2.14319532e-03]]\n",
      "\n",
      "Eigenvalues \n",
      "[ -7.64743386e-16  -2.56084279e-16  -2.03322700e-16  -1.90880092e-16\n",
      "  -1.53616130e-16  -1.33489732e-16  -1.28136214e-16  -1.03908304e-16\n",
      "  -8.00404746e-17  -7.18485926e-17  -4.76532901e-17  -3.03226990e-17\n",
      "  -1.17336026e-17  -9.62708518e-18  -8.94076503e-18  -7.31705066e-19\n",
      "  -2.57544374e-19  -8.26239866e-20  -7.48490925e-20  -6.83341663e-20\n",
      "  -4.30573000e-20  -1.37837476e-20  -9.26481781e-21  -8.69847295e-21\n",
      "  -4.26850361e-21  -2.22865792e-21  -5.67872642e-22  -2.23290267e-22\n",
      "   4.81332211e-22   1.40393805e-21   1.99617031e-21   3.57313646e-21\n",
      "   1.59553632e-20   3.68457097e-20   3.73775311e-20   7.23659520e-20\n",
      "   1.20882521e-19   3.67390950e-19   8.32823322e-19   2.56040083e-18\n",
      "   1.04482956e-17   4.45620250e-17   7.30009094e-17   7.76102343e-17\n",
      "   1.22906148e-16   1.70306189e-16   1.95391082e-16   2.06317779e-16\n",
      "   2.62256205e-16   2.89499484e-15   3.39813495e-15   1.30381750e+01]\n"
     ]
    }
   ],
   "source": [
    "print('Eigenvectors \\n%s' %eig_vecs)\n",
    "print('\\nEigenvalues \\n%s' %eig_vals)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Scale the Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "zeroMeanDf = df - df.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>...</th>\n",
       "      <th>42</th>\n",
       "      <th>43</th>\n",
       "      <th>44</th>\n",
       "      <th>45</th>\n",
       "      <th>46</th>\n",
       "      <th>47</th>\n",
       "      <th>48</th>\n",
       "      <th>49</th>\n",
       "      <th>50</th>\n",
       "      <th>51</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.001217</td>\n",
       "      <td>0.50603</td>\n",
       "      <td>-0.502388</td>\n",
       "      <td>-0.012466</td>\n",
       "      <td>-0.01801</td>\n",
       "      <td>0.510753</td>\n",
       "      <td>-0.505805</td>\n",
       "      <td>0.009097</td>\n",
       "      <td>-0.009202</td>\n",
       "      <td>0.502003</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.488753</td>\n",
       "      <td>0.011349</td>\n",
       "      <td>0.003721</td>\n",
       "      <td>0.488499</td>\n",
       "      <td>-0.497331</td>\n",
       "      <td>-0.017229</td>\n",
       "      <td>-0.006989</td>\n",
       "      <td>0.505408</td>\n",
       "      <td>-0.493037</td>\n",
       "      <td>0.005609</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.001217</td>\n",
       "      <td>-0.50603</td>\n",
       "      <td>0.502388</td>\n",
       "      <td>0.012466</td>\n",
       "      <td>0.01801</td>\n",
       "      <td>-0.510753</td>\n",
       "      <td>0.505805</td>\n",
       "      <td>-0.009097</td>\n",
       "      <td>0.009202</td>\n",
       "      <td>-0.502003</td>\n",
       "      <td>...</td>\n",
       "      <td>0.488753</td>\n",
       "      <td>-0.011349</td>\n",
       "      <td>-0.003721</td>\n",
       "      <td>-0.488499</td>\n",
       "      <td>0.497331</td>\n",
       "      <td>0.017229</td>\n",
       "      <td>0.006989</td>\n",
       "      <td>-0.505408</td>\n",
       "      <td>0.493037</td>\n",
       "      <td>-0.005609</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows × 52 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         0        1         2         3        4         5         6   \\\n",
       "0  0.001217  0.50603 -0.502388 -0.012466 -0.01801  0.510753 -0.505805   \n",
       "1 -0.001217 -0.50603  0.502388  0.012466  0.01801 -0.510753  0.505805   \n",
       "\n",
       "         7         8         9     ...           42        43        44  \\\n",
       "0  0.009097 -0.009202  0.502003    ...    -0.488753  0.011349  0.003721   \n",
       "1 -0.009097  0.009202 -0.502003    ...     0.488753 -0.011349 -0.003721   \n",
       "\n",
       "         45        46        47        48        49        50        51  \n",
       "0  0.488499 -0.497331 -0.017229 -0.006989  0.505408 -0.493037  0.005609  \n",
       "1 -0.488499  0.497331  0.017229  0.006989 -0.505408  0.493037 -0.005609  \n",
       "\n",
       "[2 rows x 52 columns]"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "zeroMeanDf"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Apply PCA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.00121733,  0.5060298 , -0.50238829, -0.01246604, -0.01800954,\n",
       "         0.51075348, -0.50580458,  0.00909651, -0.00920197,  0.50200344,\n",
       "        -0.4889561 , -0.00172163, -0.00753692,  0.50804438, -0.50778877,\n",
       "         0.00647072,  0.01324976,  0.50041224, -0.49457071, -0.00354003,\n",
       "         0.00897593,  0.50360805, -0.49771815, -0.00333147,  0.00772373,\n",
       "         0.5029433 , -0.51259607,  0.0132631 ,  0.00385893,  0.50231101,\n",
       "        -0.49157808, -0.01949861, -0.01626564,  0.49493761, -0.49339137,\n",
       "        -0.001006  ,  0.01516877,  0.48157167, -0.51560102,  0.01937497,\n",
       "        -0.00470343,  0.49469408, -0.48875264,  0.01134894,  0.00372072,\n",
       "         0.48849919, -0.49733081, -0.01722944, -0.00698886,  0.50540801,\n",
       "        -0.49303717,  0.0056091 ],\n",
       "       [-0.00121733, -0.5060298 ,  0.50238829,  0.01246604,  0.01800954,\n",
       "        -0.51075348,  0.50580458, -0.00909651,  0.00920197, -0.50200344,\n",
       "         0.4889561 ,  0.00172163,  0.00753692, -0.50804438,  0.50778877,\n",
       "        -0.00647072, -0.01324976, -0.50041224,  0.49457071,  0.00354003,\n",
       "        -0.00897593, -0.50360805,  0.49771815,  0.00333147, -0.00772373,\n",
       "        -0.5029433 ,  0.51259607, -0.0132631 , -0.00385893, -0.50231101,\n",
       "         0.49157808,  0.01949861,  0.01626564, -0.49493761,  0.49339137,\n",
       "         0.001006  , -0.01516877, -0.48157167,  0.51560102, -0.01937497,\n",
       "         0.00470343, -0.49469408,  0.48875264, -0.01134894, -0.00372072,\n",
       "        -0.48849919,  0.49733081,  0.01722944,  0.00698886, -0.50540801,\n",
       "         0.49303717, -0.0056091 ]])"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    " = zeroMeanDf.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.decomposition import PCA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Make an instance of the Model\n",
    "pca = PCA()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "eigenvectors = pca.fit_transform(zeroMeanDf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0.001217\n",
       "1   -0.001217\n",
       "Name: 0, dtype: float64"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eo"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a16acc090>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Make each feature (week have zero mean)\n",
    "plt.plot(range(0, 52), (df - df.mean()).loc[0].values)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Create the PCA fit using sklearn function\n",
    "\n",
    "We will see what is going on behind the scenes below.  For the purposes of this example, we keep all components so that we can fully reconstruct the original parameter matrix, $X$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PCA(copy=True, iterated_power='auto', n_components=2, random_state=None,\n",
       "  svd_solver='auto', tol=0.0, whiten=False)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca = PCA(n_components=2)\n",
    "pca.fit(X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Transform the data into new space using sklearn built in function\n",
    "\n",
    "Formally, we are projected the original parameters onto the new space defined by directions of maximum variance (where the directions are orthogonal to eachother)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.38340578,  0.2935787 ],\n",
       "       [ 2.22189802, -0.25133484],\n",
       "       [ 3.6053038 ,  0.04224385],\n",
       "       [-1.38340578, -0.2935787 ],\n",
       "       [-2.22189802,  0.25133484],\n",
       "       [-3.6053038 , -0.04224385]])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# representation of X in transformed space, ie, projection of X onto new basis\n",
    "Z = pca.transform(X)\n",
    "Z"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### The new space is represented by a basis, which happen to be the eigenvectors\n",
    "\n",
    "these are the eigenvectors (directions) for the transformed data in the reduced space"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.83849224, -0.54491354],\n",
       "       [ 0.54491354, -0.83849224]])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.components_ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### In solving the PCA problem, the eigenvectors are constructed to be orthonormal\n",
    "\n",
    "that is, $ \\vec{e}_i \\cdot  \\vec{e}_j = 0$ when $j \\ne i$ and $ \\vec{e}_i \\cdot  \\vec{e}_j = 1$ when $j = i$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0\n",
      "1.0\n"
     ]
    }
   ],
   "source": [
    "print(np.dot(pca.components_[:,0],pca.components_[:,1]))\n",
    "print(np.dot(pca.components_[:,0],pca.components_[:,0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Singular values\n",
    "\n",
    "We will say more about these below"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 6.30061232,  0.54980396])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.singular_values_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Transform from new space back to the original parameter space\n",
    "\n",
    "projection of new basis representation of $X$ back to original basis representation of $X$, which recovers original data (when all components used)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1., -1.],\n",
       "       [-2., -1.],\n",
       "       [-3., -2.],\n",
       "       [ 1.,  1.],\n",
       "       [ 2.,  1.],\n",
       "       [ 3.,  2.]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.inverse_transform(Z)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Above, we have shown the full deconstruction and reconstruction of X when using all components.\n",
    "\n",
    "We will now walk through two separate calculations using some linear algebra (which is what sklearn functions are actually doing)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### We will compute the Covariance matrix $C$ and corresponding eigenvectors and eigenvalues"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "C = 1/(X.shape[0])*np.dot(X.T,X)\n",
    "w, v = np.linalg.eig(C) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### The components output from sklearn is simply the eigenvalues of the covariance matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.83849224, -0.54491354],\n",
       "       [ 0.54491354,  0.83849224]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### The eigenvalues do not show up explicitly in the sklearn object, but are nothing more than the (scaled) square of the singular values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 6.30061232,  0.54980396])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.sqrt(w*(X.shape[0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### you can calculate your eigenvectors with the PCA outputs\n",
    "\n",
    "$ Z = XV$ where $V'$ = pca.components_ array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.38340578,  0.2935787 ],\n",
       "       [ 2.22189802, -0.25133484],\n",
       "       [ 3.6053038 ,  0.04224385],\n",
       "       [-1.38340578, -0.2935787 ],\n",
       "       [-2.22189802,  0.25133484],\n",
       "       [-3.6053038 , -0.04224385]])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Z1 = np.dot(X,pca.components_.T)\n",
    "Z1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# SVD can be recovered: X = U*sig*V'\n",
    "sig_inv = np.linalg.inv(np.eye(2)*pca.singular_values_)\n",
    "\n",
    "U = np.dot(Z1,sig_inv) \n",
    "U"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# check U orthonormal\n",
    "print(np.dot(U[:,0],U[:,1]))\n",
    "np.linalg.norm(np.dot(U[:,0],U[:,1])) < 10**-10"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### map back to original space"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "Xhat = np.dot(Z1,pca.components_)\n",
    "Xhat"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3>Now use Singular Value Decomposition (SVD) to do same thing without using sklearn wrapper</h3>\n",
    "\n",
    "$ X = U\\Sigma V'$ is the common SVD representation, where $U$ and $V$ are unitary, and $\\Sigma$ is diagonal.  Then, we have,\n",
    "\n",
    "$Z := XV = U\\Sigma $ and clearly, to recover $X$, we have $X = ZV' = XVV'$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "u, s, vh = np.linalg.svd(X, full_matrices=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(6, 6)\n",
      "(2, 2)\n",
      "(2, 2)\n"
     ]
    }
   ],
   "source": [
    "print(u.shape)\n",
    "print(np.diag(s).shape)\n",
    "print(vh.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.21956688,  0.53396977, -0.48030985,  0.45219595,  0.02811389,\n",
       "         0.48030985],\n",
       "       [-0.35264795, -0.45713538, -0.30371038, -0.31508521,  0.61879559,\n",
       "         0.30371038],\n",
       "       [-0.57221483,  0.07683439,  0.75680405,  0.17257785,  0.0706181 ,\n",
       "         0.24319595],\n",
       "       [ 0.21956688, -0.53396977,  0.03329824,  0.79735166,  0.1693501 ,\n",
       "        -0.03329824],\n",
       "       [ 0.35264795,  0.45713538,  0.20989771,  0.03007049,  0.7600318 ,\n",
       "        -0.20989771],\n",
       "       [ 0.57221483, -0.07683439,  0.24319595, -0.17257785, -0.0706181 ,\n",
       "         0.75680405]])"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 6.30061232,  0.54980396])"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 6.30061232,  0.        ],\n",
       "       [ 0.        ,  0.54980396],\n",
       "       [ 0.        ,  0.        ],\n",
       "       [ 0.        ,  0.        ],\n",
       "       [ 0.        ,  0.        ],\n",
       "       [ 0.        ,  0.        ]])"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# full representation of singular values\n",
    "S = np.zeros((6, 2))\n",
    "S[:2, :2] = np.diag(s)\n",
    "S"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.83849224,  0.54491354],\n",
       "       [ 0.54491354, -0.83849224]])"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vh"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Create basis for transformed space, ie, create $Z$.  Note that this will equal sklearn up to order, to get perfect match, we would order these based on largest singular value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1.38340578,  0.2935787 ],\n",
       "       [-2.22189802, -0.25133484],\n",
       "       [-3.6053038 ,  0.04224385],\n",
       "       [ 1.38340578, -0.2935787 ],\n",
       "       [ 2.22189802,  0.25133484],\n",
       "       [ 3.6053038 , -0.04224385]])"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Z2 = np.dot(X,vh.T)\n",
    "Z2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Map back to original paramter space, ie, recover X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1., -1.],\n",
       "       [-2., -1.],\n",
       "       [-3., -2.],\n",
       "       [ 1.,  1.],\n",
       "       [ 2.,  1.],\n",
       "       [ 3.,  2.]])"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Xhat1 = np.dot(Z2,vh)\n",
    "Xhat1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Concluding Remarks\n",
    "\n",
    "In using PCA Analysis, to reduce dimension, we simply start removing eigenvectors that correspond to 'small' eigenvalues, then proceed with the same calculation.  \n",
    "\n",
    "Or, in terms of [SVD](https://en.wikipedia.org/wiki/Singular-value_decomposition), remove singular values that are 'small' and their corresponding singular vectors.  \n",
    "\n",
    "In either case, you proceed with the calculations above with the reduced matrices / vectors.\n",
    "\n",
    "#### That's it, now you're an expert in the PCA done by sklearn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Tutorial"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Get Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 437,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "url = \"https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data\"\n",
    "\n",
    "# load dataset into Pandas DataFrame\n",
    "df = pd.read_csv(url, names=['sepal length','sepal width','petal length','petal width','target'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 438,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "df = df.iloc[:, 0:-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 439,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal length</th>\n",
       "      <th>sepal width</th>\n",
       "      <th>petal length</th>\n",
       "      <th>petal width</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal length  sepal width  petal length  petal width\n",
       "0           5.1          3.5           1.4          0.2\n",
       "1           4.9          3.0           1.4          0.2\n",
       "2           4.7          3.2           1.3          0.2\n",
       "3           4.6          3.1           1.5          0.2\n",
       "4           5.0          3.6           1.4          0.2"
      ]
     },
     "execution_count": 439,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Covariance"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The classic approach to PCA is to perform the eigendecomposition on the covariance matrix $\\Sigma$, which is a $n \\times n$ matrix where each element represents the covariance between two features. The covariance between two features is calculated as follows:\n",
    "\n",
    "$sigma = \\frac{1}{K}\\sum_{k=1}^{K}\\left(  x^{(k)}-\\bar{x}\\right)\\left(  x^{(k)}-\\bar{x}\\right)^{T}.$\n",
    "\n",
    "Some people use K-1 instead of K for [bessels correction](https://en.wikipedia.org/wiki/Bessel%27s_correction)\n",
    "\n",
    "where $\\mathbf{\\bar{x}}$ is the mean vector \n",
    "$\\mathbf{\\bar{x}} = \\frac{1}{K}\\sum\\limits_{k=1}^K x^{(k)}.$  \n",
    "The mean vector is a $n$-dimensional vector where each value in this vector represents the sample mean of a feature column in the dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 444,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "zeroMean = (df.values - np.mean(df.values, axis = 0)) /np.std(df.values, axis = 0)\n",
    "#zeroMean = (df.values - np.mean(df.values, axis = 0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 445,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "zeroMean = pd.DataFrame(zeroMean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 446,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "cov_mat = (zeroMean).T.dot((zeroMean)) / (zeroMean.shape[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 447,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.109369</td>\n",
       "      <td>0.871754</td>\n",
       "      <td>0.817954</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.109369</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.420516</td>\n",
       "      <td>-0.356544</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.871754</td>\n",
       "      <td>-0.420516</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.962757</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.817954</td>\n",
       "      <td>-0.356544</td>\n",
       "      <td>0.962757</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2         3\n",
       "0  1.000000 -0.109369  0.871754  0.817954\n",
       "1 -0.109369  1.000000 -0.420516 -0.356544\n",
       "2  0.871754 -0.420516  1.000000  0.962757\n",
       "3  0.817954 -0.356544  0.962757  1.000000"
      ]
     },
     "execution_count": 447,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cov_mat"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Singular Value Decomposition"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.svd.html"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "u = Unitary matrices <br>\n",
    "s = singular values for every matrix, sorted in descending order <br>\n",
    "v = unitary matrices (ie U*U = UU* = I)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 448,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "u, s, v = np.linalg.svd(cov_mat, full_matrices=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 449,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(4, 4)\n",
      "(4, 4)\n",
      "(4, 4)\n"
     ]
    }
   ],
   "source": [
    "print(u.shape)\n",
    "print(np.diag(s).shape)\n",
    "print(v.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 450,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 2.91081808,  0.92122093,  0.14735328,  0.02060771])"
      ]
     },
     "execution_count": 450,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 451,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.52237162,  0.26335492, -0.58125401, -0.56561105],\n",
       "       [-0.37231836, -0.92555649, -0.02109478, -0.06541577],\n",
       "       [ 0.72101681, -0.24203288, -0.14089226, -0.6338014 ],\n",
       "       [ 0.26199559, -0.12413481, -0.80115427,  0.52354627]])"
      ]
     },
     "execution_count": 451,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 452,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4.32280457,  2.71101253,  3.86491086,  1.2040658 ],\n",
       "       [ 6.60991158,  2.20135799,  3.72300233,  1.19610853],\n",
       "       [ 4.15140866,  3.03456705,  3.73790573,  1.18215671],\n",
       "       [ 4.19694246,  2.99373762,  3.66527395,  1.20945575]])"
      ]
     },
     "execution_count": 452,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    " np.mean(df.values, axis = 0) + (u * s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 453,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 5.84333333,  3.054     ,  3.75866667,  1.19866667])"
      ]
     },
     "execution_count": 453,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(df.values, axis = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 454,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 5.84333333,  3.054     ,  3.75866667,  1.19866667])"
      ]
     },
     "execution_count": 454,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(df.values, axis = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 2.91081808,  0.92122093,  0.14735328,  0.02060771])"
      ]
     },
     "execution_count": 215,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [conda root]",
   "language": "python",
   "name": "conda-root-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
